home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PRINTER / PROHP.ARJ / DRELATIV.PRG < prev    next >
Text File  |  1992-06-23  |  4KB  |  126 lines

  1. /*
  2.   ┌─────────────────────────────────────────────────────────────────────────┐
  3.   │                                                                         │
  4.   │    Program : relative.prg                                               │
  5.   │                                                                         │
  6.   │    Purpose : demonstrate the use of relative movement and drawing.      │
  7.   │                                                                         │
  8.   │   Author  : Copyright (C) 1992, I.L.A.,Inc. All Rights reserved.        │
  9.   │                                                                         │
  10.   │   Comments: This source code may be distributed and used freely         │
  11.   │             provided that the copyright notice is not removed.          │
  12.   │                                                                         │
  13.   └─────────────────────────────────────────────────────────────────────────┘
  14.  
  15. */
  16. #include "prohp.ch"
  17.  
  18. proc main()
  19. Local nLw, nChW, nChH, nFill,nGrayPat
  20.  
  21. HP_init()
  22. set2print("drelativ.hpc")
  23. HP_send(.t.)
  24. HP_orient(LANDSCAPE)
  25. nLw := 0.5      // line width for character drawing.
  26. nChH:= 4        // height of text drawn
  27. nChW:= (10 -(nLw*5)) /5         // width of character drawn
  28. nFill := GFILLGRAY              // fill type
  29. nGrayPat := 20                  // fill value
  30.  
  31. HP_data(D_LINEFILL,nFill)       // tell ProHP of fill
  32. HP_data(D_LINEGRAYPAT,nGrayPat) // and gray shade
  33.  
  34. HP_setpos(7,0)          // baseline for text "ProHP"
  35. ProHP(nChH,nChW,nLw)    // draw ProHP
  36. qqout("TM")
  37. // now a little different, smaller and in black
  38. nLw := 0.1
  39. nChH:= 1
  40. nChW:= 1
  41. HP_data(D_LINEFILL,GFILLGRAY)
  42. HP_data(D_LINEGRAYPAT,100)
  43.  
  44. HP_setpos(2,1)  // baseline for ProHP
  45. HP_savecsr()    // save cursor pos
  46. ProHP(nChH,nChW,nLw)    // draw "ProHP"
  47. qqout("TM")             // add TM
  48. HP_restcsr()            // restore cursor pos
  49.  
  50. HP_setpos(nLw/2,-(nLw/2),.t.)   // move a little down and left
  51. HP_data(D_LINEFILL,GFILLGRAY)   // gray fill
  52. HP_data(D_LINEGRAYPAT,20)       // 20 gray shade
  53. ProHP(nChH,nChW,nLw)            // draw "ProHP"
  54.  
  55. HPscale(50)
  56. HP_setpos(2,6.5)
  57. ProHP(nChH,nChW,nLw)
  58. qqout("TM")
  59.  
  60.  
  61. HP_reset()
  62. set2screen()
  63. return
  64.  
  65. /*
  66.         This following procedure draw the text "ProHP".
  67.         you can see how we generate the text with relative cursor
  68.         positioning and line drawing. Each letter built in block
  69.         for later evaluation. You can use this method to build graphs
  70.         and complicated forms easy.
  71. */
  72.  
  73. Proc ProHP(nChH,nChW,nLw)
  74. Local bP:={|h,w,lw|w-=lw,HP_savecsr(),;
  75. HP_setpos(-(h),,.t.),;
  76. HP_rline(h,lw),;
  77. HP_rline(lw,w),;
  78. HP_setpos(h/2,,.t.),;
  79. HP_rline(lw,w),;
  80. HP_setpos(-(h/2),w,.t.),;
  81. HP_rline(h/2+lw,lw),;
  82. HP_restcsr(),;
  83. HP_setpos(,w+lw*2,.t.)}
  84.  
  85. Local bH:={|h,w,lw|w-=lw,HP_savecsr(),;
  86. HP_setpos(-(h),,.t.),;
  87. HP_rline(h,lw),;
  88. HP_setpos(h/2,,.t.),;
  89. HP_rline(lw,w),;
  90. HP_setpos(-(h/2),w,.t.),;
  91. HP_rline(h,lw),;
  92. HP_restcsr(),;
  93. HP_setpos(,w+lw*2,.t.)}
  94.  
  95. Local br:={|h,w,lw|w-=lw,w*=0.8,HP_savecsr(),;
  96. HP_setpos(-(h/2),,.t.),;
  97. HP_rline(h/2,lw),;
  98. HP_savecsr(),;
  99. HP_setpos(MIN(lw,0.2),,.t.),;
  100. HP_rline(lw,lw*2),;
  101. HP_restcsr(),;
  102. HP_setpos(,lw*2,.t.),;
  103. HP_rline(lw,w-lw),;
  104. HP_restcsr(),;
  105. HP_setpos(,w+lw*2,.t.)}
  106.  
  107. Local bo:={|h,w,lw|w-=lw,w*=0.8,HP_savecsr(),;
  108. HP_setpos(-(h/2),,.t.),;
  109. HP_rline(h/2,lw),;
  110. HP_rline(lw,w),;
  111. HP_setpos(,w,.t.),;
  112. HP_rline(h/2,lw),;
  113. HP_setpos(h/2-lw,-w,.t.),;
  114. HP_rline(lw,w),;
  115. HP_restcsr(),;
  116. HP_setpos(,w+lw*2,.t.)}
  117.  
  118. eval(bP,nChH,nChW,nLw)  // draw 'P'
  119. eval(br,nChH,nChW,nLw)  // draw 'r'
  120. eval(bo,nChH,nChW,nLw)  // draw 'o'
  121. eval(bH,nChH,nChW,nLw)  // draw 'H'
  122. eval(bP,nChH,nChW,nLw)  // draw 'P'
  123. return
  124.  
  125.  
  126.